API: Add gtk_cairo_draw_insertion_cursor()
authorBenjamin Otte <otte@redhat.com>
Sun, 15 Aug 2010 17:38:32 +0000 (19:38 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 26 Sep 2010 13:03:00 +0000 (15:03 +0200)
For now just add it instead of replacing the current function. In the
end, this one should probably be renamed to
gtk_draw_insertion_cursor() and the current
gtk_draw_insertion_cursor() should die.

gtk/gtk.symbols
gtk/gtkstyle.c
gtk/gtkstyle.h

index 4979316c8254c4c66bea2fe405d4392f9ef23b31..ebe36be086952954e71302dd115613e6f2ceb5eb 100644 (file)
@@ -1043,6 +1043,7 @@ gtk_style_new
 gtk_style_render_icon
 gtk_style_set_background
 gtk_draw_insertion_cursor
+gtk_cairo_draw_insertion_cursor
 gtk_style_get_style_property
 gtk_style_get_valist
 gtk_style_get
index 6ab4e47839c8820a9136c330b2bd1a2a8ecb106c..0344a9659ba42669d7b651d121ed8980fe8e65af 100644 (file)
@@ -6494,12 +6494,29 @@ _gtk_widget_get_cursor_color (GtkWidget *widget,
     *color = gtk_widget_get_style (widget)->text[GTK_STATE_NORMAL];
 }
 
-static void
-draw_insertion_cursor (GtkWidget          *widget,
-                       cairo_t            *cr,
-                      const GdkRectangle *location,
-                      GtkTextDirection    direction,
-                      gboolean            draw_arrow)
+/**
+ * gtk_cairo_draw_insertion_cursor:
+ * @widget:  a #GtkWidget
+ * @cr: cairo context to draw to
+ * @location: location where to draw the cursor (@location->width is ignored)
+ * @is_primary: if the cursor should be the primary cursor color.
+ * @direction: whether the cursor is left-to-right or
+ *             right-to-left. Should never be #GTK_TEXT_DIR_NONE
+ * @draw_arrow: %TRUE to draw a directional arrow on the
+ *        cursor. Should be %FALSE unless the cursor is split.
+ * 
+ * Draws a text caret on @cr at @location. This is not a style function
+ * but merely a convenience function for drawing the standard cursor shape.
+ *
+ * Since: 3.0
+ **/
+void
+gtk_cairo_draw_insertion_cursor (GtkWidget          *widget,
+                                 cairo_t            *cr,
+                                 const GdkRectangle *location,
+                                 gboolean            is_primary,
+                                 GtkTextDirection    direction,
+                                 gboolean            draw_arrow)
 {
   gint stem_width;
   gint arrow_width;
@@ -6507,6 +6524,13 @@ draw_insertion_cursor (GtkWidget          *widget,
   gfloat cursor_aspect_ratio;
   gint offset;
   
+  g_return_if_fail (GTK_IS_WIDGET (widget));
+  g_return_if_fail (cr != NULL);
+  g_return_if_fail (location != NULL);
+  g_return_if_fail (direction != GTK_TEXT_DIR_NONE);
+
+  gdk_cairo_set_source_color (cr, get_insertion_cursor_color (widget, is_primary));
+
   /* When changing the shape or size of the cursor here,
    * propagate the changes to gtktextview.c:text_window_invalidate_cursors().
    */
@@ -6593,8 +6617,7 @@ gtk_draw_insertion_cursor (GtkWidget          *widget,
       cairo_clip (cr);
     }
   
-  gdk_cairo_set_source_color (cr, get_insertion_cursor_color (widget, is_primary));
-  draw_insertion_cursor (widget, cr, location, direction, draw_arrow);
+  gtk_cairo_draw_insertion_cursor (widget, cr, location, is_primary, direction, draw_arrow);
   
   cairo_destroy (cr);
 }
index f0946e7f2d45c446591a077323f87eedd71de636..f1c8399b35f1a7f9d1f281cdd0c6377b5264531a 100644 (file)
@@ -900,6 +900,12 @@ void   gtk_draw_insertion_cursor    (GtkWidget          *widget,
                                      gboolean            is_primary,
                                      GtkTextDirection    direction,
                                      gboolean            draw_arrow);
+void   gtk_cairo_draw_insertion_cursor (GtkWidget          *widget,
+                                        cairo_t            *cr,
+                                        const GdkRectangle *location,
+                                        gboolean            is_primary,
+                                        GtkTextDirection    direction,
+                                        gboolean            draw_arrow);
 void   _gtk_widget_get_cursor_color (GtkWidget          *widget,
                                     GdkColor           *color);